#include <stdio.h>
#include <stdbool.h>

//367. 有效的完全平方数
//给你一个正整数 num 。如果 num 是一个完全平方数，则返回 true ，否则返回 false 。
// 完全平方数 是一个可以写成某个整数的平方的整数。换句话说，它可以写成某个整数和自身的乘积。
// 不能使用任何内置的库函数，如  sqrt 。


//完全平方数可以通过累加从1往后的奇数找到，

// 1 = 1;
// 4 = 1 + 3;
// 9 = 1 + 3 + 5;
// 16 = 1 + 3 + 5 + 7;

bool isPerfectSquare(int num)
{
    if (num == 0 ) return false;

    int i = 1;
    while ( num > 0){
        num -= i;
        i += 2;
    }
    return num == 0 ? true : false;

}



// bool isPerfectSquare(int num) 
// {
//     int left = 0;
//     int right = num;
//     long long mid = 0;
//     while(left <= right)
//     {
//         mid = left + (right - left) /2;
//         if((num / mid == mid) && (num % mid == 0))
//             return true;
//         if(mid < num/mid)
//             left = mid+1;
//         if(mid > num/mid)
//             right = mid-1;
//     }
//     return false;
// }